#include <Box2D.h>
#include "common.h"
#include "b2GearJoint.h"

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jint JNICALL Java_b2GearJoint_jni_1b2GearJoint_1joint1
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return (jint)joint->GetJoint1();
}

JNIEXPORT jint JNICALL Java_b2GearJoint_jni_1b2GearJoint_1joint2
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return (jint)joint->GetJoint2();
}


JNIEXPORT jint JNICALL Java_b2GearJoint_jni_1b2GearJoint_1GetAnchorA
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return (jint)(&(joint->GetAnchorA()));
}


JNIEXPORT jint JNICALL Java_b2GearJoint_jni_1b2GearJoint_1GetAnchorB
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return (jint)(&(joint->GetAnchorB()));
}

JNIEXPORT jint JNICALL Java_b2GearJoint_jni_1b2GearJoint_1GetReactionForce
  (JNIEnv *env, jclass cls, jint addr, jfloat inv_dt)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	b2Vec2* v = new b2Vec2(joint->GetReactionForce(inv_dt));
	return (jint)v;
}

JNIEXPORT jfloat JNICALL Java_b2GearJoint_jni_1b2GearJoint_1GetReactionTorque
  (JNIEnv *env, jclass cls, jint addr, jfloat inv_dt)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return joint->GetReactionTorque(inv_dt);
}

JNIEXPORT void JNICALL Java_b2GearJoint_jni_1b2GearJoint_1SetRatio
  (JNIEnv *env, jclass cls, jint addr, jfloat ratio)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	joint->SetRatio(ratio);
}

JNIEXPORT jfloat JNICALL Java_b2GearJoint_jni_1b2GearJoint_1GetRatio
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	return joint->GetRatio();
}

JNIEXPORT void JNICALL Java_b2GearJoint_jni_1b2GearJoint_1Dump
  (JNIEnv *env, jclass cls, jint addr)
{
	b2GearJoint* joint = (b2GearJoint*)addr;
	joint->Dump();
}

#ifdef __cplusplus
}
#endif
